package com.xaicode.auth.security;

/**
 * 全局认证类常量
 * 
 * @date 2025/1/3
 */
public class AuthConst {

    /**
     * 当前登录账号信息的字段KEY
     */
    public static final String USER_KEY = "user";
    /**
     * 当前登录账号的角色列表字段KEY
     */
    public static final String ROLE_KEY = "role";
    /**
     * 当前登录账号的菜单权限列表字段KEY
     */
    public static final String PERMISSION_KEY = "permission";
    /**
     * 当前登录账号的数据权限列表字段KEY
     */
    public static final String DATA_SCOPE_KEY = "dataScope";
    /**
     * 默认管理员角色字符串
     */
    public static final String ADMIN_ROLE = "*";
    /**
     * 默认管理员权限字符串
     */
    public static final String ADMIN_PERMISSION = "*";

    /**
     * 拥有全部数据权限的标识，用于具体业务中的数据权限判定。
     * 本字段仅做标识。
     */
    public static final String DATA_SCOPE_FLAG_ALL = "*";
    /**
     * 拥有自身数据权限的标识，用于具体业务中的数据权限判定。
     * 本字段仅做标识。
     */
    public static final String DATA_SCOPE_FLAG_SELF = "self";


    /**
     * 验证码RedisKey
     */
    public static final String CAPTCHA_REDIS_KEY = "captcha:";
    /**
     * 验证码有效期, 单位：秒
     */
    public static final int CAPTCHA_EXPIRATION = 60 * 5;

    /**
     * 尝试登录的redisKey
     */
    public static final String TRY_LOGIN_COUNT_REDIS_KEY = "ASLCLOUDTK:login:try:";
    /**
     * 超过最大尝试登录后的账号锁定RedisKey
     */
    public static final String LOCK_LOGIN_REDIS_KEY = "ASLCLOUDTK:login:lock:";
    /**
     * 最大尝试登录的次数
     */
    public static final int MAX_TRY_LOGIN_LIMIT = 5;
    /**
     * 10分钟内超过最大尝试登录次数则锁定账号, 单位：秒
     */
    public static final int TRY_LOGIN_CACHE_TIME = 60 * 10;
    /**
     * 超过最大尝试登录后的账号锁定时间, 单位：秒
     */
    public static final int LOCK_TIME = 60 * 60 * 3;


    /**
     * 用户默认密码
     */
    public static final String DEFAULT_PASSWORD = "123456";

    /**
     * 逻辑删除标记 - 正常
     */
    public static final String DEL_FLAG_NORMAL = "0";
    /**
     * 逻辑删除标记 - 删除
     */
    public static final String DEL_FLAG_DELETE = "1";


    /**
     * 防止重复提交RedisKey
     */
    public static final String REPEAT_SUBMIT_REDIS_KEY = "repeat_submit:";

}
